package com.tbit.main.service;

import com.tbit.main.pojo.ParkPointBound;
import com.tbit.main.pojo.ParkPointBoundCount;

import java.util.List;
import java.util.Set;

/**
 * @author LMY
 * @create 2021-12-22 16:16
 */
public interface ParkPointBoundService {

    /**
     * 根据站点，类型，查询站点设备总数
     *
     * @param parkPointIds
     * @param type
     * @return
     */
    List<ParkPointBoundCount> getByAccountId(List<Integer> parkPointIds, Integer type);

    /**
     * 查询某个站点，类型的设备数
     *
     * @param parkPointId
     * @param type
     * @return
     */
    List<ParkPointBound> getByParkPointId(Integer parkPointId, Integer type);

    /**
     * 批量更新设备时间
     *
     * @param machineNOs
     */
    void updateTime(List<String> machineNOs, Integer type);

    /**
     * 添加设备
     *
     * @param parkPointBound
     */
    void add(ParkPointBound parkPointBound);

    /**
     * 删除设备
     *
     * @param machineNO
     */
    void del(String machineNO);

    /**
     * 更新设备
     */
    void update(String machineNO, Integer type, Integer state, String remark);

    /**
     * 根据设备编号查询
     *
     * @param machineNO
     * @return
     */
    ParkPointBound getByNO(String machineNO, Integer type);

    /**
     * 根据设别编号和时间，批量查询
     *
     * @param machineNOs
     * @param time
     * @return
     */
    List<ParkPointBound> getByNOTime(List<String> machineNOs, String time);

    /**
     * 批量更新设备状态
     *
     * @param machineNOs
     * @param state
     */
    void updateState(List<String> machineNOs, Integer state);

    /**
     * 根据站点，类型，时间，批量查询设备
     *
     * @param time
     * @param type
     * @param parkPointId
     * @return
     */
    List<ParkPointBound> getTime(String time, Integer type, List<Integer> parkPointId, Integer state, Integer accountId);

    /**
     * 根据站点，类型，时间，批量查询设备分组
     *
     * @param time
     * @param type
     * @param parkPointId
     * @return
     */
    List<ParkPointBoundCount> getTimeCount(String time, Integer type, List<Integer> parkPointId);

    /**
     * 根据站点，类型，状态，批量查询总数
     *
     * @param state
     * @param type
     * @param parkPointId
     * @return
     */
    List<ParkPointBoundCount> getByStateId(Integer state, Integer type, List<Integer> parkPointId);

    /**
     * 获取所有rfid站点id
     *
     * @return
     */
    Set<Integer> getByParkPointIdAll();

    /**
     * 批量添加
     *
     * @param machineNOs  编号集合
     * @param parkPointId 站点id
     * @param type        类型
     */
    void addBatch(String machineNOs, Integer parkPointId, Integer type);

    List<String> getByMachineNOs(List<String> machineNOs, Integer type);

    /**
     * 批量删除
     *
     * @param machineNOs
     */
    void delBatch(List<String> machineNOs, Integer type);
}
